2. Spies
Spies watch over function calls. When writing unit tests, spy on functions that you are interested in watching. For example:
// Source Code
IceCream = function() {};
IceCream.prototype.scoop = function() {};
Person = function() {};
Person.prototype.iceCream = new IceCream();
Person.prototype.eatIceCream = function(amount) {
iceCream.scoop(amount);
};
// Test Code
var _ = spies.Spies;
var person = new Person();
_.spy(person.iceCream, 'scoop');
person.eatIceCream(2);
expect(_.callCountOf(person.iceCream.scoop)(2)).to.be.equal(1);
_.reset(); // Resets all spied functions.
To ignore any arguments, use anyCallCountOf:
_.spy(person.iceCream, 'scoop');
person.eatIceCream(1);
person.eatIceCream(3);
expect(_.anyCallCountOf(person.iceCream.scoop)).to.be.equal(2);
_.reset();